Zed deployment contract (SWR-IDE-ZED) and release change-detection scope#34
Merged
Merged
Conversation
Pin the Zed extension deployment model as SWR-IDE-ZED across the specs and the shipwright-compliance skill: the WASM extension verifies the downloaded binary's SHA-256 digest in-extension, while the cosign signature over SHA256SUMS is verified at the release/CI boundary (the WASM sandbox cannot run cosign). Adds the canonical resolution order, the dead-download anti-pattern as a FAIL, and the Zed registry publishing mechanics, and auto-deploys the website on push to main. Also lands the shipwright-release-scope change-detection tool with its spec, schema, template, fixtures, and spec-coverage entry.
Extract rules_dir/run_args/assert_fails_with helpers in tools/shipwright-release-scope/tests/scope.rs so the repeated CLI-spawn and failure-assertion boilerplate is written once. Every test and assertion is preserved (23 tests still pass); deslop's measured duplication drops back under the 18% gate. No production code changed.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
TLDR
Pin the Zed extension deployment model as
[SWR-IDE-ZED]across the specs and the shipwright-compliance skill — the WASM extension verifies the downloaded binary's SHA-256 digest in-extension while the cosign signature is checked at the release boundary — and land theshipwright-release-scopechange-detection tool with its spec, schema, template, and fixtures.Details
Zed deployment contract —
[SWR-IDE-ZED]docs/specs/ide-extension-deployment.md: new[SWR-IDE-ZED]section. A Zed extension is WASM and cannot bundle a native binary; resolution order is userbinary.path→ cached download → verifiedgithub-releasedownload (latest_github_release+download_filefor the current platform → SHA-256 verified againstSHA256SUMS→make_file_executable), then version-gated via LSPinitialize.~/.cargo/bin, bare-PATH, andworktree.whichare forbidden as silent defaults. A download branch made unreachable behind a never-true guard (dead-download) is a FAIL. Publishing is a reviewed PR tozed-industries/extensions(submodule +extensions.toml+pnpm sort-extensions), WASM built reproducibly in CI, never committed.docs/specs/supply-chain-security.md: carve Zed out of cosign-signature-before-exec. The WASM sandbox has no cosign primitive, so the extension verifies the SHA-256 digest in-extension; the cosign signature overSHA256SUMSis verified at the release/CI boundary. Updated[SWR-SEC-CHECKSUM], the per-channel table row, and the Zed paragraph.SKILL.md,reference/audit-checklist.md,reference/implement-release.md,reference/manifest-and-platforms.md): audit rules updated to match — digest-in-extension vs signature-at-boundary,worktree.which/~/.cargo/binbarred as silent defaults, dead-download as a FAIL, registry publishing mechanics.crates/shipwright-zed/src/lib.rs: module doc referencesSWR-IDE-ZED..github/workflows/deploy-pages.yml: auto-deploy the website on push tomain(pathsdocs/specs/**,website/**) instead ofworkflow_dispatchonly, so the published specs stay current.Release change-detection —
shipwright-release-scopetools/shipwright-release-scope/: new Rust workspace member (adds theglobworkspace dependency;Cargo.toml/Cargo.lockupdated).docs/specs/release-change-detection.md(SWR-REL-CHANGES-*),schemas/release-scope.schema.json,templates/gh-actions/release-change-detection.yml,fixtures/release-scope/basilisk.json.fixtures/spec-coverage.json: coverage entry (SWR-SPEC-RELEASE-CHANGE-DETECTION) for the new spec.coverage-thresholds.json: 100% threshold for the new crate.No breaking changes — spec/doc/skill updates plus additive tooling; all source version fields remain
0.0.0-dev.How Do The Automated Tests Prove It Works?
node --test tests/fixtures.test.mjs(7/7):each spec file has fixture coverage or a tracked ticket idnow passes fordocs/specs/release-change-detection.md(it was red — the spec existed with no coverage entry);tracked SWR ids do not use numeric suffixespasses for the newSWR-IDE-ZEDandSWR-SPEC-RELEASE-CHANGE-DETECTIONids.make test: 100% line coverage across every crate includingcrates/shipwright-zedandtools/shipwright-release-scope; Dart resolver-vector tests and .NET tests pass.@nimblesite/shipwright-core(55 tests),@nimblesite/shipwright-vscode(16),@nimblesite/shipwright-mcp(5) all pass.make lint: clippy (compiling theshipwright-zeddoc-comment change), .NET warnings-as-errors (0), Dart analyze (no issues), and AJV manifest/schema validation all pass.